<!doctype html>
<html lang="en">
{% include head.html %}

<body>
  {% include header.html %}

  <section id="galleryMain">
    <div id="galleryTitle">
      <ul>
        <li id="meshAdaptation">
          <div class="wrap">
            <a href="{{ site.url }}{{ site.baseurl }}/gallery/meshAdaptation" onclick="fetchGallery(event, '{{ site.url }}{{ site.baseurl }}/gallery/meshAdaptation', 'Mesh adaptation'); activateGallery(this.parentNode.parentNode)" id="galleryFirst">Mesh adaptation</a>
            <div>
              <p>FreeFEM embeds a powerful 2D mesh adaptation algorithm.
              Mesh adaptation can be done <i>in-situ</i> during the simulation, as many times as necessary.
              For 3D mesh adaptation, <a href="https://www.mmgtools.org/" target="_blank">mmg3d</a> and <a href="http://wias-berlin.de/software/tetgen/" target="_blank">TetGen</a> are available as plugins.</p>
            </div>
          </div>
        </li>
        <li id="cobra">
          <div class="wrap">
            <a href="{{ site.url }}{{ site.baseurl }}/gallery/cobra" onclick="fetchGallery(event, '{{ site.url }}{{ site.baseurl }}/gallery/cobra', 'Electromagnetic scattering from COBRA cavity'); activateGallery(this.parentNode.parentNode)">Electromagnetic scattering from COBRA cavity</a>
            <div>
              <p>This is a simulation of scattering from the COBRA cavity of a plane wave incident upon the cavity aperture, obtained by solving the time-harmonic Maxwell equations.</p>
              <p>The problem is discretized with order 2 Nédélec edge finite elements, with 10 mesh points per wavelength.</p>
              <p>The resulting indefinite linear system has 198 million degrees of freedom at frequency f = 16 GHz.</p>
              <p>The problem is solved in parallel by a two-level Schwarz domain decomposition method, with a total computing time of 363 seconds on 6144 cores.</p>
            </div>
          </div>
        </li>
        <li id="ovt">
          <div class="wrap">
            <a href="{{ site.url }}{{ site.baseurl }}/gallery/ovt" onclick="fetchGallery(event, '{{ site.url }}{{ site.baseurl }}/gallery/ovt', '3D acoustic simulation with the SEG/EAGE Overthrust model'); activateGallery(this.parentNode.parentNode)">3D acoustic simulation with the SEG/EAGE Overthrust model</a>
            <div>
              <p>This is a direct acoustic simulation with the SEG/EAGE Overthrust seismic model, obtained by solving the Helmholtz equation.</p>
              <p>The problem is discretized with P2 Lagrange finite elements, with 5 mesh points per wavelength.</p>
              <p>The mesh is adapted to the spatial variations of the velocity to obtain a constant number of points per wavelength in the whole domain to save computation time.</p>
              <p>The resulting indefinite linear system has 678 million degrees of freedom at frequency f = 20 Hz.</p>
              <p>The problem is solved in parallel by a Schwarz domain decomposition method, with a total computing time of 218 seconds on 12288 cores.</p>
            </div>
          </div>
        </li>
        <li id="mediMax">
          <div class="wrap">
            <a href="{{ site.url }}{{ site.baseurl }}/gallery/mediMax" onclick="fetchGallery(event, '{{ site.url }}{{ site.baseurl }}/gallery/mediMax', 'Microwave imaging of cerebrovascular accidents'); activateGallery(this.parentNode.parentNode)">Microwave imaging of cerebrovascular accidents</a>
            <div>
              <p>This is a medical application of microwave tomographic imaging of cerebrovascular accidents (CVAs), also called brain strokes. This work has been carried out within the ANR project MEDIMAX and in collaboration with EMTensor GmbH,
                Vienna (Austria), an electromagnetic medical imaging company.</p>
              <p>It has been awarded the Bull-Joseph Fourier 1st Prize 2015 and demonstrates on synthetic data the feasibility of a new microwave imaging technique allowing for the characterization of CVAs (ischemic or hemorrhagic), beginning with
                the very first instance of patient care in an ambulance and extending to continuous patient monitoring during hospitalization.</p>
              <p>EMTensor’s experimental system consists of an electromagnetic reverberating chamber surrounded by five layers of 32 antennas each.</p>
              <p>The inversion algorithm reconstructs an image of the head from the measurements (the 160x160 scattering matrix), corresponding to a map of the dielectric properties of the different head tissues.</p>
              <p>The inversion is done using a L-BFGS algorithm, which involves repeatedly solving the direct problem modeled by Maxwell equations in the chamber, with a complex and highly heterogeneous medium.</p>
              <p>Results are obtained using synthetic data corresponding to a very precise numerical brain model from EMTensor with a simulated hemorrhagic stroke.</p>
              <p>We add 10% Gaussian white noise to the data.</p>
              <p>We can create parallelism by reconstructing the image in successive slices and solving five smaller inverse problems independently, each problem corresponding to one ring of antennas.</p>
              <p>This, together with the parallelism coming from the domain decomposition method as well as solving for multiple right-hand sides, allows us to reconstruct an image corresponding to one ring in less than two minutes (94 seconds) using
                4096 computing cores.</p>
            </div>
          </div>
        </li>
        <li id="roots">
          <div class="wrap">
            <a href="{{ site.url }}{{ site.baseurl }}/gallery/roots" onclick="fetchGallery(event, '{{ site.url }}{{ site.baseurl }}/gallery/roots', 'Water and nutrient uptake by plant roots'); activateGallery(this.parentNode.parentNode)">Water and nutrient uptake by plant roots</a>
            <div>
              <p>In the context of the development of sustainable agriculture aiming at preserving natural resources and ecosystems, it is necessary to improve our understanding of underground processes and interactions between soil and plant roots.
                Although the root system is responsible for taking up water and nutrients from the surrounding soil, roots are hidden below ground and measurements are difficult to obtain.</p>
              <p>In this work, mechanistic models and numerical tools were developed for the simulation of soil water and solute transport with plant root uptake at the whole root system scale while taking the three-dimensional architecture of the
                root system explicitly into account. An emphasis is put on resolving the geometry of the root system as well as small-scale processes occurring in the rhizosphere, which play a major role in plant root uptake. The models are governed
                by nonlinear parabolic equations and can be used to study how the uptake pattern is affected by the shape and architecture of the root system.</p>
              <p>In order to make these large 3D numerical simulations tractable, we take advantage of unstructured mesh adaptation and parallel computing tools available in FreeFEM. The mesh adaptation procedure allows to accurately represent the
                geometry of the root system in the soil domain and capture the high gradients expected near the roots. The most accurate model relies on an implicit representation of the actual surface of the roots through a level set approach,
                splitting the computational domain between the soil domain and the root system. Soil and root water flow are then coupled and solved in a monolithic way. Some numerical simulations of water uptake by maize root systems are shown here.
              </p>
            </div>
          </div>
        </li>
      </ul>
    </div>
    <div id="galleryImg">
	  {{ content }}
    </div>
  </section>

  {% include footer.html %}
  <script src="{{ site.url }}{{ site.baseurl }}/js/fetchGallery.js"></script>

	<script>
	if (!history.state) {
		const url = window.location.href
		const title = '{{ page.title }}'
		history.pushState({url: url, title: title}, title, url)
	}

  const url = window.location.href
  const lastURLSegment = url.substr(url.lastIndexOf('/')+1)
  if (lastURLSegment === 'gallery') {
    const first = document.getElementById('galleryFirst')
    first.click()
  } else {
    const toActivate = document.getElementById(lastURLSegment)
    if (toActivate)
      activateGallery(toActivate)
  }
	</script>
</body>

</html>
